package javax.core.common.clazz;

import java.util.List;
import java.util.stream.Collectors;

public class BeanUtilz {
    /**
     * 把一个对象转换为另一个对象，
     *
     * @param sourceObject 输入对象
     * @param toClass      需要转换的类
     * @param <T>          类的泛型定义
     * @return 返回T的对象，如果发生异常，则返回null, 如果sourceObject为空，也返回Null
     */
    public static <T> T objectConvert(Object sourceObject, Class<T> toClass) {
        if (sourceObject == null) {
            return null;
        }
        T newObject = null;
        try {
            newObject = toClass.newInstance();
            org.springframework.beans.BeanUtils.copyProperties(sourceObject, newObject);
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
        return newObject;
    }

    /**
     * 把一个对象结构的List，转换为另一个对象结构的List
     *
     * @param sourceList 输入的对象List
     * @param toClass    需要转换的类
     * @param <T>        类的泛型定义
     * @return 返回T的List对象，如果发生异常，则返回null, 如果 sourceList 为空，也返回Null
     */
    public static <T> List<T> objectListConvert(List<? extends Object> sourceList, Class<T> toClass) {
        if (sourceList == null) {
            return null;
        }
        return sourceList.stream().map(e -> objectConvert(e, toClass)).collect(Collectors.toList());
    }


}
